package com.mdp.lcode.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mdp.core.query.QueryTools;
import com.mdp.lcode.entity.FormDef;
import com.mdp.lcode.entity.FormDefVo;
import com.mdp.lcode.entity.FormQx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mdp.core.service.BaseService;

import com.mdp.lcode.entity.FormField;
import com.mdp.lcode.mapper.FormFieldMapper;
/**
 * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br> 
 * 组织 com  顶级模块 mdp 大模块 form 小模块 <br>
 * 实体 FormField 表 form_field 当前主键(包括多主键): id; 
 ***/
@Service
public class FormFieldService extends BaseService<FormFieldMapper,FormField> {
	static Logger logger =LoggerFactory.getLogger(FormFieldService.class);

	/**
	 * 自定义查询，支持多表关联
	 * @param page 分页条件
	 * @param ew 一定要，并且必须加@Param("ew")注解
	 * @param ext 如果xml中需要根据某些值进行特殊处理，可以通过这个进行传递，非必须，注解也可以不加
	 * @return
	 */
	public List<Map<String,Object>> selectListMapByWhere(IPage page, QueryWrapper ew, Map<String,Object> ext){
		return baseMapper.selectListMapByWhere(page,ew,ext);
	}

	@Autowired
	FormFieldCacheService formFieldCacheService;

	@Autowired
	FormDefService formDefService;

	@Autowired
	FormQxService formQxService;

	public void deleteByFormId(String formId) {
		UpdateWrapper<FormField> uw= new UpdateWrapper<FormField>();
		uw.eq("form_id",formId);
		super.remove(uw);
	}

	public void putFormFields(String formId,FormDefVo formDefVo){
		formFieldCacheService.putFormFields(formId, formDefVo);
	}

	public FormDefVo getFormFieldFromCache(String formId){
		FormDefVo formDefVo=this.formFieldCacheService.getFormFields(formId);
		if(formDefVo==null) {
			formDefVo=new FormDefVo();
			FormDef formDef=formDefService.selectOneById(formId);
			if(formDef==null){
				return null;
			}
			List<FormField> formFields = this.list(QueryTools.initQueryWrapper(FormField.class).eq("form_id",formId).orderByAsc("seq"));	//列出FormField列表
			formDefVo.setFormDef(formDef);
			formDefVo.setFormFields(formFields);
			FormQx formQx=formQxService.getOne(QueryTools.initQueryWrapper(FormQx.class).eq("form_id",formId));
			formDefVo.setFormQx(formQx);
			formFieldCacheService.putFormFields(formId, formDefVo);
		}
		return formDefVo;
	}
	/** 请在此类添加自定义函数 */
}

